package cn.tristenstudy.blog.service;

import cn.tristenstudy.blog.pojo.Blog;
import cn.tristenstudy.blog.pojo.vo.BlogQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Map;

/**
 * @author xichen1.li
 * @date 2020-12-29 14:43
 */
public interface BlogService {
    /**
     * 通过id查询博客(编辑页面)
     *
     * @param id id
     * @return 博客对象
     */
    Blog getBlog(Long id);

    /**
     * 通过id查询博客
     *
     * @param id id
     * @return 博客对象
     */
    Blog selectById(Long id);

    /**
     * 分页查询博客列表
     *
     * @param query 查询条件
     * @return 结果
     */
    Page<Blog> listBlog(BlogQuery query);

    /**
     * 分页查询博客列表（首页展示）
     *
     * @param current 页码
     * @return 分页结果
     */
    Page<Blog> listBlog(Integer current);

    /**
     * 查询博客列表（首页展示）
     *
     * @param size 个数
     * @return 分页结果
     */
    List<Blog> listRecommendBlogTop(Integer size);

    /**
     * 保存博客
     *
     * @param blog 博客
     * @return 结果
     */
    Boolean saveBlog(Blog blog);

    /**
     * 修改博客
     *
     * @param blog 博客
     * @return 结果
     */
    Boolean updateBlog(Blog blog);

    /**
     * 删除博客
     *
     * @param id id
     * @return 结果
     */
    Boolean deleteBlog(Long id);

    /**
     * 根据归档查询博客列表
     *
     * @return 归档后博客列表
     */
    Map<String, List<Blog>> archiveBlog();

    /**
     * 获取已发布的博客数量
     *
     * @return 已发布的博客数量
     */
    Integer getBlogCount();

}
